﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls;
using TS.Bussiness;
using TS.Entities;
using TS.Commons;


namespace Tranco.Views
{
    public partial class UpdateUser : System.Web.UI.Page
    {

        private string _userId;
        private string _errorPage = "~/Error.aspx";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                _userId = Request.QueryString["uid"];
                HiddenFieldUserId.Value = Request.QueryString["uid"];
                LoadGroup();
                LoadOwner();

                LoadUser(HiddenFieldUserId.Value.ToNumeric());

            }
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            lblStatus.ForeColor = Color.Red;
            if (string.IsNullOrEmpty(txtUser.Text))
            {
                lblStatus.Text = "Username không được trống.";
                return;
            }
            if (txtUser.Text.Length < 3)
            {
                lblStatus.Text = "Username có ít nhất 3 ký tự";
                return;
            }
            if (txtUser.Text.Length > 50)
            {
                lblStatus.Text = "Username không được dài quá 50 ký tự";
                return;
            }

            if (!string.Equals(txtPassword.Text, txtRepassword.Text))
            {
                lblStatus.Text = "Xác nhận mật khẩu sai";
                return;
            }
            if (txtPassword.Text.Length < 6 && txtPassword.Text.Length > 0)
            {
                lblStatus.Text = "Mật khẩu phải có ít nhất 6 ký tự";
                return;
            }
            if (txtEmail.Text.Length > 100)
            {
                lblStatus.Text = "Email phải ít hơn 100 ký tự";
                return;
            }
            User user = new User();
            try
            {
                user.Userid = HiddenFieldUserId.Value.ToNumeric();
                user.UserName = txtUser.Text.ToStringOrDefault();
                if (txtRepassword.Text.Length > 0)
                {

                    user.Password = CryptographyHelper.HashPassword(txtRepassword.Text);
                }
                else
                {
                    user.Password = "";
                }
                user.Email = txtEmail.Text.ToStringOrDefault();
                user.Sex = drGen.SelectedItem.Value.ToNumeric();
                user.GroupId = drRole.SelectedItem.Value.ToNumeric();
                user.OwnerId = drOwner.SelectedItem.Value.ToNumeric();
                user.IsLock = drIsLok.SelectedItem.Value.ToNumeric();

                UserBussiness userB = new UserBussiness();
                int result = userB.UpdateUser(user);
                if (result >= 0)
                {
                    lblStatus.Text = "Update tài khoản thành công";
                    lblStatus.ForeColor = Color.Blue;
                    ClientConfirm();
                }
                else
                {
                    if (result == -2)
                        lblStatus.Text = "Tài khoản không tồn tại";
                    else lblStatus.Text = "Update tài khoản không thành công";
                }
            }
            catch { }
        }

        private void LoadUser(int userId)
        {
            try
            {


                if (_userId.ToNumeric() > 0)
                {
                    var bu = new UserBussiness();
                    var user = bu.GetUserByUserId(userId);

                    txtUser.Text = user.UserName.ToStringOrDefault();
                    txtEmail.Text = user.Email.ToStringOrDefault();
                    txtPassword.Text = user.Password.ToStringOrDefault();
                    txtRepassword.Text = user.Password.ToStringOrDefault();

                    drGen.Items.FindByValue(user.Sex.ToStringOrDefault()).Selected = true;
                    drRole.Items.FindByValue(user.GroupId.ToStringOrDefault()).Selected = true;
                    drIsLok.Items.FindByValue(user.IsLock.ToStringOrDefault()).Selected = true;
                    if (user.OwnerId.ToNumeric() > 0)
                        drOwner.Items.FindByValue(user.OwnerId.ToStringOrDefault()).Selected = true;
                }
                else
                {
                    Response.Redirect(_errorPage);

                }
            }
            catch (Exception)
            {
            }
        }

        private void LoadGroup()
        {
            GroupBussiness grpB = new GroupBussiness();
            drRole.DataSource = grpB.GetAllGroup();
            drRole.DataValueField = "GroupId";
            drRole.DataTextField = "Name";
            drRole.DataBind();
        }

        private void LoadOwner()
        {
            OwnerBussiness bs = new OwnerBussiness();
            drOwner.DataSource = bs.GetAllOwner();
            drOwner.DataTextField = "Name";
            drOwner.DataValueField = "OwnerId";
            drOwner.DataBind();

            drOwner.Items.Insert(0, new ListItem(string.Empty, string.Empty));
            //drOwner.SelectedIndex = 0;

        }
        public void ClientConfirm()
        {
            var strScript = new StringBuilder();
            strScript.Append("<script language=JavaScript>");
            string scriptString = string.Format(CultureInfo.CurrentCulture, @"var result = window.confirm('Cập nhập thông tin thành công. Bạn có muốn trở lại trang quản lý?'); " +
                     "if(result) location.href='/Views/UserManagement.aspx';</script>");
            strScript.Append(scriptString);
            ClientScript.RegisterStartupScript(GetType(), "Pop", strScript.ToString());
        }
    }
}